﻿using System;
using blackhouse.Payments.Presenter;
namespace blackhouse.Payments {
    public interface IPaymentTransaction {

        double ChargeValue { get; set; }
        string ClientIP { get; }
        PayUConfig Configuration { get; }
        string Description { get; }
        string EMail { get; }
        string FirstName { get; }
        string LastName { get; }
        string Sig { get; }

        string BankTransferDescription { get; set; }
        string City { get; set; }
        string Country { get; set; }
        string DescriptionExtension { get; set; }
        bool Exist { get; set; }
        string FlatNumber { get; set; }
        bool JsEnable { get; set; }
        string Language { get; set; }
        DateTime CreatedDate { get; set; }
        DateTime BeginDate { get; set; }
        DateTime SentDate { get; set; }
        DateTime ReceiveDate { get; set; }
        DateTime CancelDate { get; set; }
        int OrderId { get; set; }
        string PaybackLogin { get; set; }
        int PaymentTrancactionId { get; }
        PaymentType PaymentType { get; set; }
        string Phone { get; set; }
        string PostCode { get; set; }
        void SaveNew();
        PaymentTransactionStatus Status { get; set; }
        string Street { get; set; }
        string StreetNumber { get; set; }
        string Ts { get; }
        string UserSessionId { get; }

        void SaveUpdateSnapshot(string snapshot);
        void Save();
        void AddLog();
        void LogError(PaymentError paymentError);
        void LogPositive();

    }
}
